Bar code scanning comprises the generation of a scan pattern consisting of one or more scan lines traced out by a reflection of a laser beam, the use of light scattered from a reflection of scan lines to create a scan signal, and the interpretation of the scan signal to detect and decode a bar code as the bar code is illuminated by scan lines. Scan lines emerge from a bar code scanner into a scan volume and intersect a bar code that is introduced into and moved through the scan volume. One or more scan lines typically sweep across the bar code. Typical retail scanners produce scan patterns comprising multiple scan lines traced out in a number of different directions. If scan lines are traced out in a number of directions, a bar code will have a greater likelihood of being intersected by one or more lines of the scan pattern.
Because scan lines are traced out in a number of directions, a significant likelihood exists that scan lines will sometimes partially transect a bar code, generating partial bar code information. Therefore, in order to provide for increased scanner efficiency and to avoid a need for an operator to always position a bar code so that it is fully transected by one scan line, scanners are typically capable of combining, or stitching together, multiple partial intersections. A partial intersection often produces sufficient data to decode several characters, and intersections producing sufficient characters for the technique being used, including a common character, can be stitched together.
A single character often comprises a significant number of light and dark elements. For example, in Code 39 bar codes, a character is represented by four light and five dark elements, with an intercharacter gap, similar to a light element, appearing between adjacent characters. If stitching adjacent Code 39 characters required a minimum of four characters in each segment, for example, the segment would be required to include at least 40 light and dark elements. Typical prior art stitching techniques are not able to use data elements making up less than a full character, so that elements on one or both sides of a string of full characters would not be usable.
In addition, misframing of data can cause inability to use data or misinterpretation of data, because if a scan line enters a bar code in the middle of a character, there is no delimiter to indicate where the entry occurred. Moreover, noise, for example, electrical noise or signals generated by an intersection of scan lines with package graphics, may generate extraneous data that can be misinterpreted as bar code data, and be mistakenly combined with bar code data generated by a partial scan, leading to failure to stitch segments or to a misread.